* a superseded run stops holding a runner - #12
Conversation
ci.yml had no concurrency group, so pushing three times to a branch queued three full matrices and ran all of them. With the runner pool as the bottleneck, the two obsolete copies are what everything else waits behind. A newer pull-request run now supersedes the older one. A push to main is deliberately not cancelled: main wants a recorded result for every commit, not only for the newest. This is the pattern the shared dotnet-ci.yml already uses.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 94e0379e5f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| group: ci-${{ github.event_name }}-${{ github.ref }} | ||
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} |
There was a problem hiding this comment.
Avoid dropping queued non-PR runs
When three workflow_dispatch runs target the same ref, GitHub Actions allows only one running and one pending member of a concurrency group; the newest run cancels the existing pending run even when cancel-in-progress is false. Consequently, this configuration can still discard an intermediate main-ref run, contrary to the stated requirement that non-PR runs are preserved. Apply this concurrency group only to PR runs or give non-cancellable runs unique group keys.
Useful? React with 👍 / 👎.
ci.ymlhad noconcurrencygroup, so pushing three times to a branch queued three full matrices and ran all of them. With the runner pool as the bottleneck across these repositories, the obsolete copies are what everything else waits behind.A newer pull-request run now supersedes the older one. A push to
mainis deliberately not cancelled —mainwants a recorded result for every commit, not only for the newest. This is the pattern the shareddotnet-ci.ymlalready uses; this repo keeps one inline job alongside the delegated ones, and that job was uncovered.